<html>
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
  <h1 data-lake-id="xKmmi" id="xKmmi"><span data-lake-id="u47876c9f" id="u47876c9f">典型回答</span></h1>
  <p data-lake-id="u6dd65e46" id="u6dd65e46"><br></p>
  <p data-lake-id="u71e78e69" id="u71e78e69"><span data-lake-id="u84493af1" id="u84493af1">推荐几个我在用的插件！</span></p>
  <h3 data-lake-id="bFjMN" id="bFjMN"><span data-lake-id="u9c61cdbe" id="u9c61cdbe">Maven Helper</span></h3>
  <p data-lake-id="u190bc717" id="u190bc717"><span data-lake-id="u182d6263" id="u182d6263">目前，Java开发很多都在使用maven进行项目管理和自动构建。</span></p>
  <p data-lake-id="u9f19ccd3" id="u9f19ccd3"><span data-lake-id="u56022ec6" id="u56022ec6">日常开发中，可能经常会遇到jar包冲突等问题，就需要通过查看maven依赖树来查查看依赖情况。这种方式不是很高效，这里推荐一个插件，安装之后，直接打开pom文件，即可查看依赖数，还能自动分析是否存在jar包冲突。</span></p>
  <p data-lake-id="u70f997d4" id="u70f997d4"><span data-lake-id="u0dab659b" id="u0dab659b">一旦安装了Maven Helper插件，只要打开pom文件，就可以打开该pom文件的Dependency Analyzer视图（在文件打开之后，文件下面会多出这样一个tab）。</span></p>
  <p data-lake-id="ucc5d9351" id="ucc5d9351"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332634306-cfd1e718-33b3-4d8f-91e8-d403cefe1611.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_40%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="u30e4b759" id="u30e4b759">​</span></p>
  <p data-lake-id="u410d13ca" id="u410d13ca"><span data-lake-id="u5e7b4ae5" id="u5e7b4ae5">进入Dependency Analyzer视图之后有三个查看选项，分别是Conflicts(冲突)、All Dependencies as List(列表形式查看所有依赖)、All Dependencies as Tree(树结构查看所有依赖)。并且这个页面还支持搜索。</span></p>
  <h3 data-lake-id="QeoAH" id="QeoAH"><span data-lake-id="u4d6c354f" id="u4d6c354f">FindBugs-IDEA</span></h3>
  <p data-lake-id="u32b6ca75" id="u32b6ca75"><span data-lake-id="u65129d96" id="u65129d96">FindBugs很多人都并不陌生，Eclipse中有插件可以帮助查找代码中隐藏的bug，IDEA中也有这款插件。</span></p>
  <p data-lake-id="ubc40f46f" id="ubc40f46f"><span data-lake-id="uc6c8f5b0" id="uc6c8f5b0">使用方法很简单，就是可以对多种级别的内容进行finbugs</span></p>
  <p data-lake-id="u06ddd39c" id="u06ddd39c"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1687332634333-2b8c5e78-92c6-447c-9cf1-fff310f187c2.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_19%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="uc5ced5ff" id="uc5ced5ff">￼</span></p>
  <p data-lake-id="u815d7494" id="u815d7494"><span data-lake-id="u22df3182" id="u22df3182">分析完之后会有一个视图进行提示，详细的说明是哪种问题。</span></p>
  <p data-lake-id="u3c59fade" id="u3c59fade"><img src="https://cdn.nlark.com/yuque/0/2023/png/5378072/1687332634300-88089197-a557-4086-849d-983070c474aa.png?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_31%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="u3f4f1762" id="u3f4f1762"><span data-lake-id="u0127aec0" id="u0127aec0"> 按照提示解决完问题之后再执行findbug查看情况即可。</span></p>
  <h3 data-lake-id="gBpMp" id="gBpMp"><span data-lake-id="ub5988545" id="ub5988545">阿里巴巴代码规约检测</span></h3>
  <p data-lake-id="uc56d0b2d" id="uc56d0b2d"><span data-lake-id="ud51bdc75" id="ud51bdc75">2017年10月14日杭州云栖大会，Java代码规约扫描插件全球首发仪式正式启动，规范正式以插件形式公开走向业界，引领Java语言的规范之路。</span></p>
  <p data-lake-id="u6031b1b4" id="u6031b1b4"><span data-lake-id="u86c9e133" id="u86c9e133">Java代码规约扫描插件以今年年初发布的《阿里巴巴Java开发规约》为标准，作为Eclipse、IDEA的插件形式存在，检测JAVA代码中存在不规范得位置然后给予提示。规约插件是采用kotlin语言开发的，感兴趣的同学可以去开看插件源码。</span></p>
  <p data-lake-id="u4a795639" id="u4a795639"><span data-lake-id="ua4f4a32c" id="ua4f4a32c">阿里巴巴规约插件包含三个子菜单：编码规约扫描、关闭试试检测功能。</span></p>
  <p data-lake-id="u5def3d77" id="u5def3d77"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332634307-c98d79a2-605a-4c2d-8ee0-1091b4862c89.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_40%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="u9cbdce54" id="u9cbdce54">​</span></p>
  <p data-lake-id="u435566f6" id="u435566f6"><span data-lake-id="u5ea7accb" id="u5ea7accb">并且，该插件支持在编写代码的同时进行提示，</span></p>
  <p data-lake-id="ud5bc51d3" id="ud5bc51d3"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332634308-7d4682af-d871-45ad-8e91-5c4a1ddad829.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_44%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="u25ec0d9d" id="u25ec0d9d">​</span></p>
  <p data-lake-id="uc8c430dd" id="uc8c430dd"><span data-lake-id="ub06f34a0" id="ub06f34a0">这款插件，真的可以很大程度上提升代码质量，一定要安装。</span></p>
  <h3 data-lake-id="WDgQM" id="WDgQM"><span data-lake-id="u725864bb" id="u725864bb">GsonFormat</span></h3>
  <p data-lake-id="u90ac253c" id="u90ac253c"><span data-lake-id="u159c3935" id="u159c3935">Java开发中，经常有把json格式的内容转成Object的需求，比如项目开始时，合作方给你提供了一个json格式request/response，这时候你就需要将其定义成一个Java类，GsonFormat这款插件可以实现该功能。</span></p>
  <p data-lake-id="uc5cb4f8b" id="uc5cb4f8b"><img src="https://cdn.nlark.com/yuque/0/2023/gif/5378072/1687332634731-d3ae3c76-c22f-4558-b44d-d73d3b54935d.gif"><span data-lake-id="u18b24b88" id="u18b24b88">​</span></p>
  <h3 data-lake-id="Tsvxu" id="Tsvxu"><span data-lake-id="u3b97d25c" id="u3b97d25c">Lombok plugin</span></h3>
  <p data-lake-id="u690f2c0d" id="u690f2c0d"><span data-lake-id="u2473d5e9" id="u2473d5e9">在Java中，我们经常会定义很多JavaBean，这些Bean需要有getter、setter、toString、equals和hashCode等方法。</span></p>
  <p data-lake-id="u24465248" id="u24465248"><span data-lake-id="u25c891ef" id="u25c891ef">​</span><br></p>
  <p data-lake-id="u064b77db" id="u064b77db"><span data-lake-id="u4d55965b" id="u4d55965b">通常情况下，我们可以使用IDEA的快捷键生成这些代码，但是自动生成的代码后，如果bean中的属性一旦有修改，需要重新生成，给代码维护增加了一定的负担。</span></p>
  <p data-lake-id="u86876377" id="u86876377"><span data-lake-id="uc46d8c8d" id="uc46d8c8d">​</span><br></p>
  <p data-lake-id="uf8da3502" id="uf8da3502"><span data-lake-id="uc3df67e3" id="uc3df67e3">有一款很好的插件，可以帮助开发者节省这部分工作。那就是Lombok。</span></p>
  <p data-lake-id="u39f1cfb8" id="u39f1cfb8"><span data-lake-id="uf872858e" id="uf872858e">​</span><br></p>
  <p data-lake-id="ufc1f410c" id="ufc1f410c"><span data-lake-id="uac292ce5" id="uac292ce5">只要在IDEA中安装了该插件，只需要在JavaBean中添加一行注解代码，插件就会自动帮我们生成getter、setter、toString、equals和hashCode等方法。</span></p>
  <p data-lake-id="uda94d081" id="uda94d081"><span data-lake-id="ud8927144" id="ud8927144">​</span><br></p>
  <p data-lake-id="u8cfc5e8c" id="u8cfc5e8c"><span data-lake-id="u4e553a9c" id="u4e553a9c">当然，这些方法不止在IDE中的代码调用中需要用到，在真正线上部署的时候也需要有，所以，还需要使用maven引入一个lombok的包。</span></p>
  <pre lang="java"><code>
&lt;dependency&gt;
      &lt;groupId&gt;org.projectlombok&lt;/groupId&gt;
      &lt;artifactId&gt;lombok&lt;/artifactId&gt;
      &lt;version&gt;1.16.10&lt;/version&gt;
&lt;/dependency&gt;

/**
 * @author Hollis
 */
public class HollisLab {

    public static void main(String[] args) {
        Wechat wechat = new Wechat();
        wechat.setId("Hollis");
        wechat.setDesc("每日更新Java技术文章");
        System.out.println(wechat);
    }
}

@Data
class Wechat {
    private String id;
    private String desc;
}
</code></pre>
  <p data-lake-id="ue4d8f667" id="ue4d8f667"><span data-lake-id="u6ed91e78" id="u6ed91e78">输出结果：</span></p>
  <pre lang="java"><code>
Wechat(id=Hollis, desc=每日更新Java技术文章)
</code></pre>
  <p data-lake-id="u384ed8aa" id="u384ed8aa"><span data-lake-id="ue005deb5" id="ue005deb5">我们在Wechat类上面添加了@Data注解，插件就自动帮我们添加了getter/setter和toString方法。</span></p>
  <h3 data-lake-id="hgWGj" id="hgWGj"><br></h3>
  <h3 data-lake-id="FoV5l" id="FoV5l"><span data-lake-id="u3b2a3e8c" id="u3b2a3e8c">String Manipulation</span></h3>
  <p data-lake-id="ucc4ff897" id="ucc4ff897"><span data-lake-id="u0352c323" id="u0352c323">字符串日常开发中经常用到的，但是不同的字符串类型在不同的地方可能有一些不同的规则，比如类名要用驼峰形式、常量需要全部大写等，有时候还需要进行编码解码等。这里推荐一款强大的字符串转换工具——String Manipulation。</span></p>
  <p data-lake-id="u2315b3f2" id="u2315b3f2"><span data-lake-id="u0fbe124c" id="u0fbe124c">它强大到什么程度，看下他的功能列表你就知道了：</span></p>
  <p data-lake-id="u8d639a79" id="u8d639a79"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332634706-97e6f223-4428-4821-a415-9b75bbdf4b67.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_24%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="uaeb99f2d" id="uaeb99f2d">​</span></p>
  <ul list="u4e91cfd9">
   <li fid="ubb03d675" data-lake-id="uddda2f32" id="uddda2f32" data-lake-index-type="true"><span data-lake-id="u579d9aec" id="u579d9aec">文本转换操作</span></li>
  </ul>
  <ul list="u4e91cfd9" data-lake-indent="1">
   <li fid="u9f572789" data-lake-id="u60e846bf" id="u60e846bf" data-lake-index-type="true"><span data-lake-id="uce329981" id="uce329981">切换样式（camelCase, hyphen-lowercase, HYPHEN-UPPERCASE, snake_case, SCREAMING_SNAKE_CASE, dot.case, words lowercase, Words Capitalized, PascalCase）</span></li>
   <li fid="u9f572789" data-lake-id="u526b22f7" id="u526b22f7" data-lake-index-type="true"><span data-lake-id="u6810fe7b" id="u6810fe7b">转换为SCREAMING_SNAKE_CASE (或转换为camelCase)</span></li>
   <li fid="u9f572789" data-lake-id="u3cac5c34" id="u3cac5c34" data-lake-index-type="true"><span data-lake-id="u4ef14b0f" id="u4ef14b0f">转换为 snake_case (或转换为camelCase)</span></li>
   <li fid="u9f572789" data-lake-id="uf77b5363" id="uf77b5363" data-lake-index-type="true"><span data-lake-id="uf4119a6b" id="uf4119a6b">转换为dot.case (或转换为camelCase)</span></li>
   <li fid="u9f572789" data-lake-id="u4aeb5030" id="u4aeb5030" data-lake-index-type="true"><span data-lake-id="u31c49c88" id="u31c49c88">转换为hyphen-case (或转换为camelCase)</span></li>
   <li fid="u9f572789" data-lake-id="u5a2c47ff" id="u5a2c47ff" data-lake-index-type="true"><span data-lake-id="ua263054d" id="ua263054d">转换为hyphen-case (或转换为snake_case)</span></li>
   <li fid="u9f572789" data-lake-id="ubf4061ca" id="ubf4061ca" data-lake-index-type="true"><span data-lake-id="u01153ed1" id="u01153ed1">转换为camelCase (或转换为Words)</span></li>
   <li fid="u9f572789" data-lake-id="u3cb09436" id="u3cb09436" data-lake-index-type="true"><span data-lake-id="u89309e4d" id="u89309e4d">转换为camelCase (或转换为lowercase words)</span></li>
   <li fid="u9f572789" data-lake-id="u2ca9d9b1" id="u2ca9d9b1" data-lake-index-type="true"><span data-lake-id="uec774446" id="uec774446">转换为PascalCase (或转换为camelCase)</span></li>
   <li fid="u9f572789" data-lake-id="uab820b23" id="uab820b23" data-lake-index-type="true"><span data-lake-id="u9c7cd3d8" id="u9c7cd3d8">选定文本大写</span></li>
   <li fid="u9f572789" data-lake-id="ub03704d9" id="ub03704d9" data-lake-index-type="true"><span data-lake-id="ua7e651b2" id="ua7e651b2">样式反转</span></li>
  </ul>
  <ul list="u4e91cfd9" start="2">
   <li fid="ubb03d675" data-lake-id="u3af81d3b" id="u3af81d3b" data-lake-index-type="true"><span data-lake-id="u992b482d" id="u992b482d">Un/Escape</span></li>
  </ul>
  <ul list="u4e91cfd9" data-lake-indent="1">
   <li fid="ud164141a" data-lake-id="ufc6f8c2b" id="ufc6f8c2b" data-lake-index-type="true"><span data-lake-id="u4c52d424" id="u4c52d424">Un/Escape 选中的 java 文本</span></li>
   <li fid="ud164141a" data-lake-id="u7c3707b2" id="u7c3707b2" data-lake-index-type="true"><span data-lake-id="uddc77093" id="uddc77093">Un/Escape 选中的 javascript 文本</span></li>
   <li fid="ud164141a" data-lake-id="u86819004" id="u86819004" data-lake-index-type="true"><span data-lake-id="ub7a353d7" id="ub7a353d7">Un/Escape 选中的 HTML 文本</span></li>
   <li fid="ud164141a" data-lake-id="ufd8831e2" id="ufd8831e2" data-lake-index-type="true"><span data-lake-id="u4d6143e5" id="u4d6143e5">Un/Escape 选中的 XML 文本</span></li>
   <li fid="ud164141a" data-lake-id="u18294685" id="u18294685" data-lake-index-type="true"><span data-lake-id="u6f449305" id="u6f449305">Un/Escape 选中的 SQL 文本</span></li>
   <li fid="ud164141a" data-lake-id="ue43a0e75" id="ue43a0e75" data-lake-index-type="true"><span data-lake-id="ue548f7a6" id="ue548f7a6">Un/Escape 选中的 PHP 文本</span></li>
   <li fid="ud164141a" data-lake-id="u255d7c69" id="u255d7c69" data-lake-index-type="true"><span data-lake-id="u41798384" id="u41798384">将 diacritics(accents) 转换为 ASCII</span></li>
   <li fid="ud164141a" data-lake-id="uf6fa19f0" id="uf6fa19f0" data-lake-index-type="true"><span data-lake-id="uc25475ea" id="uc25475ea">将非ASCII 转换为转义的Unicode</span></li>
   <li fid="ud164141a" data-lake-id="u832824ee" id="u832824ee" data-lake-index-type="true"><span data-lake-id="udfa388f3" id="udfa388f3">将转义的Unicode转换为字符串</span></li>
  </ul>
  <ul list="u4e91cfd9" start="3">
   <li fid="ubb03d675" data-lake-id="u52b1acc3" id="u52b1acc3" data-lake-index-type="true"><span data-lake-id="u01a1a85a" id="u01a1a85a">Encode/Decode</span></li>
  </ul>
  <ul list="u4e91cfd9" data-lake-indent="1">
   <li fid="u863b4b90" data-lake-id="u512dd76e" id="u512dd76e" data-lake-index-type="true"><span data-lake-id="uaffec4f3" id="uaffec4f3">Encode 选中的文本为 MD5 Hex16</span></li>
   <li fid="u863b4b90" data-lake-id="u354dd411" id="u354dd411" data-lake-index-type="true"><span data-lake-id="ude039e5a" id="ude039e5a">De/Encode 选中的文本为 URL</span></li>
   <li fid="u863b4b90" data-lake-id="u675e652c" id="u675e652c" data-lake-index-type="true"><span data-lake-id="u3a3dbaae" id="u3a3dbaae">De/Encode 选中的文本为 Base64</span></li>
  </ul>
  <ul list="u4e91cfd9" start="4">
   <li fid="ubb03d675" data-lake-id="u1a09323c" id="u1a09323c" data-lake-index-type="true"><span data-lake-id="u4af97bf5" id="u4af97bf5">递增/递减</span></li>
  </ul>
  <ul list="u4e91cfd9" data-lake-indent="1">
   <li fid="u2638b486" data-lake-id="ua464b4b1" id="ua464b4b1" data-lake-index-type="true"><span data-lake-id="ua09b0554" id="ua09b0554">递增/递减所有找到的数字</span></li>
   <li fid="u2638b486" data-lake-id="ud205b411" id="ud205b411" data-lake-index-type="true"><span data-lake-id="uaa5599ca" id="uaa5599ca">复制行并且递增/递减所有找到的数字</span></li>
   <li fid="u2638b486" data-lake-id="ub27a645f" id="ub27a645f" data-lake-index-type="true"><span data-lake-id="u90148424" id="u90148424">创建序列：保持第一个数字，递增替换所有其他数字</span></li>
   <li fid="u2638b486" data-lake-id="uf3f9c82b" id="uf3f9c82b" data-lake-index-type="true"><span data-lake-id="uffe713af" id="uffe713af">递增重复的数字</span></li>
  </ul>
  <ul list="u4e91cfd9" start="5">
   <li fid="ubb03d675" data-lake-id="uc61e1e20" id="uc61e1e20" data-lake-index-type="true"><span data-lake-id="u80604d13" id="u80604d13">按自然顺序排序</span></li>
  </ul>
  <ul list="u4e91cfd9" data-lake-indent="1">
   <li fid="ud1d90a66" data-lake-id="u8512a9bc" id="u8512a9bc" data-lake-index-type="true"><span data-lake-id="u649a9d80" id="u649a9d80">按行倒序</span></li>
   <li fid="ud1d90a66" data-lake-id="uf9eea679" id="uf9eea679" data-lake-index-type="true"><span data-lake-id="u976bcb24" id="u976bcb24">按行随机排序</span></li>
   <li fid="ud1d90a66" data-lake-id="u98138988" id="u98138988" data-lake-index-type="true"><span data-lake-id="u5f075c91" id="u5f075c91">区分大小写A-z排序</span></li>
   <li fid="ud1d90a66" data-lake-id="uc8e888fa" id="uc8e888fa" data-lake-index-type="true"><span data-lake-id="u87fed7db" id="u87fed7db">区分大小写z-A排序</span></li>
   <li fid="ud1d90a66" data-lake-id="uff0fc12e" id="uff0fc12e" data-lake-index-type="true"><span data-lake-id="u4cbe040c" id="u4cbe040c">不区分大小写A-Z排序</span></li>
   <li fid="ud1d90a66" data-lake-id="u2721f3ff" id="u2721f3ff" data-lake-index-type="true"><span data-lake-id="u3fcc16aa" id="u3fcc16aa">不区分大小写Z-A排序</span></li>
   <li fid="ud1d90a66" data-lake-id="ua6039aa4" id="ua6039aa4" data-lake-index-type="true"><span data-lake-id="u06d106a9" id="u06d106a9">按行长度排序</span></li>
   <li fid="ud1d90a66" data-lake-id="ufc6521bd" id="ufc6521bd" data-lake-index-type="true"><span data-lake-id="ufb12aae0" id="ufb12aae0">通过子选择行排序：每行仅处理一个选择/插入符号</span></li>
  </ul>
  <ul list="u4e91cfd9" start="6">
   <li fid="ubb03d675" data-lake-id="u5d0423c6" id="u5d0423c6" data-lake-index-type="true"><span data-lake-id="u686a8a28" id="u686a8a28">对齐</span></li>
  </ul>
  <ul list="u4e91cfd9" data-lake-indent="1">
   <li fid="ucf1366be" data-lake-id="ue0f8d919" id="ue0f8d919" data-lake-index-type="true"><span data-lake-id="u39ef1730" id="u39ef1730">通过选定的分隔将选定的文本格式化为列/表格</span></li>
   <li fid="ucf1366be" data-lake-id="u760023f1" id="u760023f1" data-lake-index-type="true"><span data-lake-id="uf903f840" id="uf903f840">将文本对齐为左/中/右</span></li>
  </ul>
  <ul list="u4e91cfd9" start="7">
   <li fid="ubb03d675" data-lake-id="uf3df1a8a" id="uf3df1a8a" data-lake-index-type="true"><span data-lake-id="ub9ad2fde" id="ub9ad2fde">过滤/删除/移除</span></li>
  </ul>
  <ul list="u4e91cfd9" data-lake-indent="1">
   <li fid="u2d0fb996" data-lake-id="u5e4e4a32" id="u5e4e4a32" data-lake-index-type="true"><span data-lake-id="u97c0903f" id="u97c0903f">grep选定的文本，所有行不匹配输入文字将被删除。 （不能在列模式下工作）</span></li>
   <li fid="u2d0fb996" data-lake-id="u0f36a63f" id="u0f36a63f" data-lake-index-type="true"><span data-lake-id="uf7e3dec7" id="uf7e3dec7">移除选定的文本</span></li>
   <li fid="u2d0fb996" data-lake-id="u6f7a8675" id="u6f7a8675" data-lake-index-type="true"><span data-lake-id="ub928825f" id="ub928825f">移除选定文本中的所有空格</span></li>
   <li fid="u2d0fb996" data-lake-id="u940fb6a3" id="u940fb6a3" data-lake-index-type="true"><span data-lake-id="uc1054c77" id="uc1054c77">删除选定文本中的所有空格</span></li>
   <li fid="u2d0fb996" data-lake-id="u80d2e5dd" id="u80d2e5dd" data-lake-index-type="true"><span data-lake-id="u1aeabe40" id="u1aeabe40">删除重复的行</span></li>
   <li fid="u2d0fb996" data-lake-id="u8cbbf2bf" id="u8cbbf2bf" data-lake-index-type="true"><span data-lake-id="u295a0304" id="u295a0304">只保留重复的行</span></li>
   <li fid="u2d0fb996" data-lake-id="ubf5028c8" id="ubf5028c8" data-lake-index-type="true"><span data-lake-id="u7374e0d4" id="u7374e0d4">删除空行</span></li>
   <li fid="u2d0fb996" data-lake-id="ucc3c25ab" id="ucc3c25ab" data-lake-index-type="true"><span data-lake-id="u1ff18ae2" id="u1ff18ae2">删除所有换行符</span></li>
  </ul>
  <ul list="u4e91cfd9" start="8">
   <li fid="ubb03d675" data-lake-id="uc363a1e7" id="uc363a1e7" data-lake-index-type="true"><span data-lake-id="u9691f26e" id="u9691f26e">其他</span></li>
  </ul>
  <ul list="u4e91cfd9" data-lake-indent="1">
   <li fid="u1348492d" data-lake-id="u5e39410c" id="u5e39410c" data-lake-index-type="true"><span data-lake-id="uc64f97aa" id="uc64f97aa">交换字符/选择/线/标记</span></li>
   <li fid="u1348492d" data-lake-id="uad47abcb" id="uad47abcb" data-lake-index-type="true"><span data-lake-id="u2bfaadba" id="u2bfaadba">切换文件路径分隔符：Windows &lt; - &gt; UNIX</span></li>
  </ul>
  <p data-lake-id="u597520ac" id="u597520ac"><span data-lake-id="u25016b1b" id="u25016b1b">安装好插件后，选中需要处理的内容后，按快捷键Alt+m，即可弹出工具功能列表。</span></p>
  <p data-lake-id="u0984344f" id="u0984344f"><span data-lake-id="u10c58c78" id="u10c58c78">很好很强大的一款字符串处理工具。</span></p>
  <h3 data-lake-id="ddUuh" id="ddUuh"><span data-lake-id="udbe22227" id="udbe22227">.ignore</span></h3>
  <p data-lake-id="u57f51bde" id="u57f51bde"><span data-lake-id="u39603d27" id="u39603d27">目前很多开发都在使用git做版本控制工具，但是有些时候有些代码我们是不想提到到我们的代码仓库中的，比如ide自动生成的一些配置文件，或者是我们打包生成的一些jar文件等，这时候就需要编写一个.ignore文件，来排除那些不想被版本管理的文件。</span></p>
  <p data-lake-id="u096c6378" id="u096c6378"><span data-lake-id="ue06261a3" id="ue06261a3">这里推荐一个好用的插件.ignore，他可以帮我们方便的生成各种ignore文件。</span></p>
  <p data-lake-id="u49be8535" id="u49be8535"><span data-lake-id="ue9555484" id="ue9555484">安装插件后，选中项目，右键新建的时候，会多出一个.ignore文件的选项，可以通过这个选项创建ignore文件。</span></p>
  <p data-lake-id="ufd52e9f1" id="ufd52e9f1"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332635744-2d09e3f7-d3bf-497d-8e8a-9992dcc5152b.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_43%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="ue1f65e21" id="ue1f65e21">​</span></p>
  <p data-lake-id="u85e35b7d" id="u85e35b7d"><span data-lake-id="u9ec990c8" id="u9ec990c8">在弹出的对话框中，可以自动帮我们生成一份.ignore文件，这里我们让其帮忙自动排除所有和idea有关的文件。</span><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332635756-18bc4250-38d6-4ea2-abc8-1811badfb835.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_34%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="ud714038e" id="ud714038e">​</span></p>
  <h3 data-lake-id="ANU2v" id="ANU2v"><span data-lake-id="u9b5026cb" id="u9b5026cb">Mybatis plugin</span></h3>
  <p data-lake-id="u621ce2d9" id="u621ce2d9"><span data-lake-id="u9cb1324e" id="u9cb1324e">目前ORM框架中，Mybatis非常受欢迎。但是，同时给很多开发带来困扰的就是Mybatis需要很多xml的配置文件，有的时候很难去进行修改。</span></p>
  <p data-lake-id="ud78bf583" id="ud78bf583"><span data-lake-id="u10625888" id="u10625888">这里推荐一款神器，可以让你像编辑java代码一样编辑mybatis的文件。</span></p>
  <p data-lake-id="u5cf94681" id="u5cf94681"><span data-lake-id="u8fa89eca" id="u8fa89eca">Intellij Idea Mybatis插件主要功能：</span></p>
  <ul list="u56ced405">
   <li fid="u12722023" data-lake-id="u7dbd6ad0" id="u7dbd6ad0" data-lake-index-type="true"><span data-lake-id="uf013e265" id="uf013e265">提供Mapper接口与配置文件中对应SQL的导航</span></li>
   <li fid="u12722023" data-lake-id="uacf7fca1" id="uacf7fca1" data-lake-index-type="true"><span data-lake-id="ue1965a62" id="ue1965a62">编辑XML文件时自动补全</span></li>
   <li fid="u12722023" data-lake-id="u94dfc466" id="u94dfc466" data-lake-index-type="true"><span data-lake-id="u342cc343" id="u342cc343">根据Mapper接口, 使用快捷键生成xml文件及SQL标签</span></li>
   <li fid="u12722023" data-lake-id="u73f2e8f8" id="u73f2e8f8" data-lake-index-type="true"><span data-lake-id="u214a3801" id="u214a3801">ResultMap中的property支持自动补全，支持级联(属性A.属性B.属性C)</span></li>
   <li fid="u12722023" data-lake-id="uf6532b38" id="uf6532b38" data-lake-index-type="true"><span data-lake-id="u9a9e01b4" id="u9a9e01b4">快捷键生成@Param注解</span></li>
   <li fid="u12722023" data-lake-id="u135c9a83" id="u135c9a83" data-lake-index-type="true"><span data-lake-id="ub2d7f7e4" id="ub2d7f7e4">XML中编辑SQL时, 括号自动补全</span></li>
   <li fid="u12722023" data-lake-id="ueeffff6d" id="ueeffff6d" data-lake-index-type="true"><span data-lake-id="u0624e24d" id="u0624e24d">XML中编辑SQL时, 支持参数自动补全(基于@Param注解识别参数)</span></li>
   <li fid="u12722023" data-lake-id="uc3fb7ff3" id="uc3fb7ff3" data-lake-index-type="true"><span data-lake-id="u3bb0030e" id="u3bb0030e">自动检查Mapper XML文件中ID冲突</span></li>
   <li fid="u12722023" data-lake-id="u69147a65" id="u69147a65" data-lake-index-type="true"><span data-lake-id="u6cab4d9d" id="u6cab4d9d">自动检查Mapper XML文件中错误的属性值</span></li>
   <li fid="u12722023" data-lake-id="u96792e0a" id="u96792e0a" data-lake-index-type="true"><span data-lake-id="ufb363dfb" id="ufb363dfb">支持Find Usage</span></li>
   <li fid="u12722023" data-lake-id="u94cd97fa" id="u94cd97fa" data-lake-index-type="true"><span data-lake-id="ubfe359a6" id="ubfe359a6">支持重构从命名</span></li>
   <li fid="u12722023" data-lake-id="uf7b19cb5" id="uf7b19cb5" data-lake-index-type="true"><span data-lake-id="ub33466fc" id="ub33466fc">支持别名</span></li>
   <li fid="u12722023" data-lake-id="ub34927a8" id="ub34927a8" data-lake-index-type="true"><span data-lake-id="u66a7973b" id="u66a7973b">自动生成ResultMap属性</span></li>
  </ul>
  <p data-lake-id="u07d8dbce" id="u07d8dbce"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332635775-28898fa2-8297-4bd5-aaaa-e14019aad53c.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_16%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="u0ba88b2e" id="u0ba88b2e"><span data-lake-id="u300934aa" id="u300934aa">​</span><br></p>
  <p data-lake-id="ue8a863b8" id="ue8a863b8"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332635847-ea99e21d-e32e-40ab-8e4e-b33409a91929.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_18%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"></p>
  <p data-lake-id="ub51d4eb9" id="ub51d4eb9"><span data-lake-id="ub7731cc0" id="ub7731cc0">​</span><br></p>
  <p data-lake-id="u8bc2ceed" id="u8bc2ceed"><span data-lake-id="ua290e734" id="ua290e734">但是这款插件是收费的，但是不影响他确实是一个很实用，可以很大程度上提升开发效率的插件。读者可以考虑使用Free Mybatis plugin（这款插件我没用过，具体是否好用有待考证）。</span></p>
  <h3 data-lake-id="PXzdR" id="PXzdR"><span data-lake-id="u46bcb9b6" id="u46bcb9b6">Key promoter X</span></h3>
  <p data-lake-id="u92a15b19" id="u92a15b19"><span data-lake-id="u4e276f27" id="u4e276f27">对于很多刚刚开始使用IDEA的开发者来说，最苦恼的就是不知道快捷键操作是什么。</span></p>
  <p data-lake-id="ucc5f0025" id="ucc5f0025"><span data-lake-id="u3b5ef9d0" id="u3b5ef9d0">使用IDEA，如果所有操作都使用鼠标，那么说明你还不是一个合格的程序员。</span></p>
  <p data-lake-id="ud5f1305f" id="ud5f1305f"><span data-lake-id="uf9e40c6b" id="uf9e40c6b">这里推荐一款可以进行快捷键提示的插件Key promoter X。</span></p>
  <p data-lake-id="u31913ea0" id="u31913ea0"><span data-lake-id="uc8a24818" id="uc8a24818">Key Promoter X 是一个提示插件，当你在IDEA里面使用鼠标的时候，如果这个鼠标操作是能够用快捷键替代的，那么Key Promoter X会弹出一个提示框，告知你这个鼠标操作可以用什么快捷键替代。</span></p>
  <p data-lake-id="ud27ef888" id="ud27ef888"><span data-lake-id="ua665381e" id="ua665381e">当我使用鼠标查看一个方法都被哪些类使用的时候，就会提示：</span></p>
  <p data-lake-id="u560a4a7b" id="u560a4a7b"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332636551-7ce71361-9959-449d-8d53-52f80a8a1d71.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_10%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="u4cddcd7b" id="u4cddcd7b">​</span></p>
  <p data-lake-id="u9f926a93" id="u9f926a93"><span data-lake-id="ue51f1370" id="ue51f1370">记住这个快捷键以后，就可以使用快捷键代替鼠标啦。</span></p>
  <h3 data-lake-id="nURLp" id="nURLp"><span data-lake-id="ue97033cd" id="ue97033cd">AceJump</span></h3>
  <p data-lake-id="u030e3cb9" id="u030e3cb9"><span data-lake-id="uc6a1c0d7" id="uc6a1c0d7">前面介绍了一款可以通过使用快捷键来代替鼠标操作的插件，这里再介绍一款可以彻底摆脱鼠标的插件，即AceJump</span></p>
  <p data-lake-id="u69d8d8af" id="u69d8d8af"><span data-lake-id="u824e84b1" id="u824e84b1">AceJump允许您快速将光标导航到编辑器中可见的任何位置，只需点击“ctrl +;”，然后输入一个你想要跳转到的字符，之后键入匹配的字符就跳转到你想要挑战的地方了。</span></p>
  <p data-lake-id="u5a0771be" id="u5a0771be"><img src="https://cdn.nlark.com/yuque/0/2023/jpeg/5378072/1687332636872-69916531-82c4-4b13-9b5e-561bc6448518.jpeg?x-oss-process=image%2Fwatermark%2Ctype_d3F5LW1pY3JvaGVp%2Csize_15%2Ctext_SmF2YSA4IEd1IFA%3D%2Ccolor_FFFFFF%2Cshadow_50%2Ct_80%2Cg_se%2Cx_10%2Cy_10"><span data-lake-id="u9ae3ae38" id="u9ae3ae38">​</span></p>
  <p data-lake-id="u6eb4a6d4" id="u6eb4a6d4"><span data-lake-id="u3a3ed031" id="u3a3ed031">如以上代码，我想在这个类中，跳转到println那个位置，只需要按下快捷键：“ctrl +;”，然后输入println，即可定位到目标位置。</span></p>
  <p data-lake-id="uc937418b" id="uc937418b"><span data-lake-id="u4011f6c9" id="u4011f6c9">上图中，我输入了pri三个字母后，页面提示三个可选项，分别用字母G、H、D标注，这时候只需要按下对应字母，即可快速定位到指定位置，是不是很方便。</span></p>
  <h3 data-lake-id="b92hi" id="b92hi"><span data-lake-id="u96f4903d" id="u96f4903d">activate-power-mode</span></h3>
  <p data-lake-id="u30022332" id="u30022332"><span data-lake-id="uf943503a" id="uf943503a">最后，介绍一款程序员很好的在妹子面前装X的插件——activate-power-mode 。</span></p>
  <p data-lake-id="u1f556b31" id="u1f556b31"><span data-lake-id="u4991f550" id="u4991f550">安装了这款插件之后，你写代码的时候，就会附加一些狂拽炫酷屌炸天的效果：</span></p>
  <p data-lake-id="u29212034" id="u29212034"><img src="https://cdn.nlark.com/yuque/0/2023/gif/5378072/1687332636763-8aff5b75-a8ed-45e5-8287-9b3a2688cbec.gif"><span data-lake-id="u2b70a33c" id="u2b70a33c">​</span></p>
 </body>
</html>